package DesignPattern.FactoryMethod;

/**
 * @author : LdLtd
 * @Date : 2023/12/11
 * @Description:
 * 优点：工厂方法
 *
 * 解决了简单工厂违背开闭原则的问题
 * 需要新增产品时只需新增产品及对应工厂即可，不在对已有代码进行修改
 * 将工厂与产品选择进行解耦，选择权交予客户端，工厂只专注于生产对应产品
 *
 * 缺点：
 *
 * 引入抽象工厂和具体工厂，类增多代码复杂度增加
 * 一个工厂只能生产一个产品，往往会造成工厂类过多
 */
public class FactoryMethod {
    public static void main(String[] args) {
        AdditionFactory additionFactory = new AdditionFactory();
        Operation addition = additionFactory.createCalculate();
        System.out.println(addition.getResult(1, 2));

        DivisionFactory divisionFactory = new DivisionFactory();
        Operation division = divisionFactory.createCalculate();
        System.out.println(division.getResult(1, 0));
    }
}
